package com.dh.blog.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import com.dh.blog.vo.ArticlePagerVo;
import com.dh.blog.vo.ArticleVo;
import com.dh.blog.vo.CatalogVo;
import com.dh.blog.vo.CommentVo;
import com.dh.blog.vo.HolderVo;
import com.dh.blog.vo.PagerVo;
import com.dh.blog.vo.PictureFileVo;
/**
 * 因为归档没有独立的业务处理，
 * 所以和文章结合在一个Dao里面
 * @author David
 *
 */
@Repository
public interface ArticleDao {
	/**
	 * 添加文章
	 * @param article
	 */
	public void addOne(ArticleVo article);
	/**
	 * 根据id获取文章
	 * @param articleId
	 */
	public ArticleVo getArticleById(Integer articleId);
	/**
	 * 更新文章
	 * @param article
	 * @param updateTime
	 * @return
	 */
	public int updateOne(@Param("article")ArticleVo article,
			@Param("updateTime")long updateTime);
	/**
	 * 查找推荐的文章
	 * @param blogId
	 * @return
	 */
	public List<ArticleVo> getCommandsByBlog(String blogId);
	/**
	 * 添加文章归档
	 */
	public void addHolder(HolderVo holderVo);
	/**
	 * 年月获取归档
	 * @param year
	 * @param month
	 * @return
	 */
	public HolderVo getHolderByYearAndMonth(@Param("blogId")String blogId,
			@Param("year")Integer year,@Param("month")Integer month);
	/**
	 * 列出所有文章归档
	 * @param BlogId
	 */
	public List<HolderVo> listAllHolder(String blogId);
	/**
	 * 增加归档文章数
	 * @param holderId
	 */
	public void incArticleNum(Integer holdId);
	/**
	 * 添加文章归档或者增加归档文章数(对mysql)
	 * @param holderVo
	 */
	public void insertOrIncHolder(HolderVo holderVo);
	/**
	 * 减少归档文章数
	 * @param holdId
	 */
	public void decArticleNum(Integer holdId);
	/**
	 * 分页查找博客文章（带查询参数）
	 * @param pager
	 * @return
	 */
	public ArticlePagerVo findPagerByBlog(PagerVo pager);
	public ArticlePagerVo findPagerByBlogAdmin(ArticlePagerVo pager);
	/**
	 * 根据文章获得文章图片
	 * @param articleId
	 * @return
	 */
	public List<PictureFileVo> getPicsByArticle(Integer articleId);
	/**
	 * 添加文章图片
	 * @param pic
	 */
	public void addPic(PictureFileVo pic);
	/**
	 * 删除文章图片
	 * @param article
	 */
	public void deletePics(Integer article);
	/**
	 * 根据博客和分类统计文章数量
	 * @param blogId
	 * @param classifyId
	 */
	public int countByBlogAndCly(@Param("blogId")String blogId,@Param("classifyId")Integer classifyId);
	/**
	 * 根据博客统计文章数量
	 * @param blogId
	 * @param classifyId
	 */
	public int countByBlog(String blogId);
	/**
	 * 判断对应文章是否存在
	 * @param articleId
	 * @return
	 */
	public int exists(Integer articleId);
	/**
	 * 存储目录
	 * @param catalog
	 */
	public void addCatalog(CatalogVo catalog);
	/**
	 * 查询目录
	 * @param articleId
	 */
	public CatalogVo getCatalogByArticle(Integer articleId);
}
